/*
 * Título: gestHora. Aplicación web de gestión de horarios para conservatorios.
 * Alumnos:
 * - Javier Pardo Muñoz. I.T. Informática de Gestión
 * - Antonio Prior Cazorla. I.T. Informática de Gestión
 * Director: Dr. José Raúl Romero Salguero.
 *     
 *  Copyright (C) 2013 Javier Pardo Muñoz / Antonio Prior Cazorla
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

/*
 * Obtiene todos los alumnos del sistema y dibuja la tabla con sus datos
 */
function listarAlumnos() {
    //Se recuperan los JSON donde estara la información de las alumnos
    $.getJSON("/gestHora/jsp/controllers/gestionAlumnoController.jsp", "tipo=listarAlumnos", function(data) {
        //Se crea una newHTML donde crearemos el codigo html que se enviará a la View 
        var newHTML = "<h3>Listado actual de alumnos</h3><form class='formVistasNoticia'>\n\
                        <label for='buscar'>Filtrado: </label><input type='text' name='buscar' value='' id='buscar' onkeypress='return event.keyCode!=13'/><br/><br/></form>\n\
                        <table class = 'tablaView rowstyle-alt paginate-10 sortable-onload-show-4'><thead><tr><th class=sortable-text>ID</th><th class=sortable-text>Usuario</th><th class=sortable-text>DNI</th><th class=sortable-text>Nombre</th><th class=sortable-text>Primer Apellido</th><th class=sortable-text>Segundo Apellido</th><th class=sortable-text>Email</th><th>Editar</th><th>Eliminar</th></tr></thead>";
        //Se rellena las tablas
        $.each(data, function(i, alumno) {
            newHTML += "<tr><td>" + alumno.idUsuario + "</td><td>" + alumno.nombreUsuario + "</td><td>" + alumno.dniAlumno + "</td><td>" + alumno.nombreAlumno + "</td><td>" + alumno.apellido1Alumno + "</td><td>" + alumno.apellido2Alumno + "</td><td>" + alumno.email + "</td><td>" +
                    "<a href=javascript:void(0); onclick=editorAlumno('" + alumno.idUsuario + "');> <img src=/gestHora/img/editar.png alt=editar></a></td><td>" +
                    "<a href=javascript:void(0); onclick=confirmar('" + alumno.idUsuario + "');> <img src=/gestHora/img/eliminar.png alt=eliminar</a></td></tr>";
        });

        newHTML += "</table>";
        //enviamos la tabla a las View
        $("#tabla").html(newHTML);
        //Se crea el filtrado de la tabla
        creaFiltrado();
        tablePaginater.init();
        fdTableSort.init();
    });

}

/*
 * Obtiene el alumno que se quiere editar mediante su id y rellena el formulario de edición con los datos actuales
 */
function editorAlumno(id) {
    //Se recuperan los JSON donde estara la información del alumno que queriemos modificar
    $.getJSON("/gestHora/jsp/controllers/gestionAlumnoController.jsp", "tipo=editarAlumno&id=" + id, function(data) {
        //insertamos la información del alumno en la View 
        $.each(data, function(i, alumno) {
            $('#editarId').val(alumno.idUsuario);
            $('#editarUsuario').val(alumno.nombreUsuario);
            $("#editarNombre").val(alumno.nombreAlumno);
            $('#editarApellido1').val(alumno.apellido1Alumno);
            $('#editarApellido2').val(alumno.apellido2Alumno);
            $("#editarDni").val(alumno.dniAlumno);
            $('#editarEmail').val(alumno.email);
            rellenarSelectEspecialidadEditarAlumno(alumno.idEspecialidad);
        });
        //oculto el formNuevoAlumno   
        $('#formEditarAlumno').fadeIn();
        $('#formNuevoAlumno').fadeOut();
    });

}

function rellenarSelectEspecialidadEditarAlumno(idEspecialidad) {
    //Se recuperan los JSON donde estara la información del alumno que queriemos modificar
    $.getJSON("/gestHora/jsp/controllers/gestionEspecialidadController.jsp", "tipo=listarEspecialidades", function(data1) {
        $.each(data1, function(i, especialidad) {
            if (idEspecialidad === especialidad.idEspecialidad) {
                $("<option value= " + especialidad.idEspecialidad + " selected>" + especialidad.nombreEspecialidad + "</option>").appendTo("#selectEditarEspecialidad");
            } else {
                $("<option value= " + especialidad.idEspecialidad + " >" + especialidad.nombreEspecialidad + "</option>").appendTo("#selectEditarEspecialidad");
            }
        });
    });
}

function generarPDFHorarioAlumno(usuario) {

    var html = $('#tabla').html();

    window.open(
            "/gestHora/jsp/controllers/horarioAlumnoController.jsp" + "?tipo=generarPDF&html=" + html + "&usuario=" + usuario,
            '_blank'
            );


}

function rellenarTablaHorarioAlumnoPropio(usuario) {

    limpiarTablaAlumno();
    $.getJSON("/gestHora/jsp/controllers/horarioAlumnoController.jsp", "tipo=listarHorario&usuario=" + usuario, function(data) {
        $.each(data, function(i, alumno) {
            recorrerTablaAlumno(alumno.idHora, alumno.idDia, alumno.nombreAsignatura, alumno.numeroGrupo, alumno.nombreAula, alumno.duracion);
        });

    });

}

function recorrerTablaAlumno(hora, dia, asignatura, grupo, aula, duracion) {

    $('#tablaView tbody tr').each(function(i) {
        $(this).children("td").each(function(e) {
            if ((i + 1) === hora && e + 1 === dia) {
                $(this).html("<span class='tooltipHorario' href='javascript:void(0);'>" + asignatura + "<br class='pdf'/> <span> Grupo: " + grupo +
                        "<br/>Aula: " + aula + "<br/>Duración: " + duracion + " horas</span></span>");

                /*Si una asignatura dura más de una hora se combinan las celdas y se limpian las sobrantes*/
                if (duracion > 1) {
                    $(this).attr("rowspan", duracion);
                    for (x = i + 1; x < (i + duracion); x++) {
                        $('#tablaView tr:gt(' + x + ')').find("td").eq(e).hide();
                    }
                }
            }
        });
    });

}

function limpiarTablaAlumno() {
    var aux = 8;
    $("#tablaView > tbody").empty();
    for (i = 0; i < 13; i++) {
        if (aux !== 15)
            $('#tablaView tbody').append('<tr><th>' + aux + ':00</th><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>');
        aux++;
    }
}

function listarAlumnosAsignatura(usuario, idAsignatura) {

    //Se crea una newHTML donde crearemos el codigo html que se enviará a la View 
    var newHTML = "<h3>Listado de alumnos</h3><form class='formVistasNoticia'>\n\
                        <label for='buscar'>Filtrado: </label><input type='text' name='buscar' value='' id='buscar' onkeypress='return event.keyCode!=13'/><br/><br/></form>\n\
                        <table class = 'tablaView rowstyle-alt paginate-10 sortable-onload-show-4'><thead><tr><th class=sortable-text>ID</th><th class=sortable-text>Usuario</th><th class=sortable-text>DNI</th><th class=sortable-text>Nombre</th><th class=sortable-text>Primer Apellido</th><th class=sortable-text>Segundo Apellido</th><th class=sortable-text>Email</th></tr></thead>";

    $("#tabla").html(newHTML);
    $('#generarPDF').hide();

    //Se recuperan los JSON donde estara la información de las alumnos
    $.getJSON("/gestHora/jsp/controllers/listadoAlumnosController.jsp", "tipo=listarAlumnos&usuario=" + usuario + "&idAsignatura=" + idAsignatura, function(data) {

        $('#generarPDF').show();

        //Se rellena las tablas
        $.each(data, function(i, alumno) {
            newHTML += "<tr><td>" + alumno.idUsuario + "</td><td>" + alumno.nombreUsuario + "</td><td>" + alumno.dniAlumno + "</td><td>" + alumno.nombreAlumno + "</td><td>" + alumno.apellido1Alumno + "</td><td>" + alumno.apellido2Alumno + "</td><td>" + alumno.email + "</td></tr>";
        });

        newHTML += "</table>";
        //enviamos la tabla a las View
        $("#tabla").html(newHTML);
        //Se crea el filtrado de la tabla
        creaFiltrado();
        tablePaginater.init();
        fdTableSort.init();
    });

}


function generarPDFListadoAlumnos(usuario, idAsignatura) {

    $.getJSON("/gestHora/jsp/controllers/listadoAlumnosController.jsp", "tipo=listarAlumnos&usuario=" + usuario + "&idAsignatura=" + idAsignatura, function(data) {
        //Se crea una newHTML donde crearemos el codigo html que se enviará a la View 
        var newHTML = "<table class = 'tablaView'><thead><tr><th>ID</th><th>Usuario</th><th>DNI</th><th>Nombre</th><th>Primer Apellido</th><th>Segundo Apellido</th><th>Email</th></tr></thead>";


        //Se rellena las tablas
        $.each(data, function(i, alumno) {
            newHTML += "<tr><td>" + alumno.idUsuario + "</td><td>" + alumno.nombreUsuario + "</td><td>" + alumno.dniAlumno + "</td><td>" + alumno.nombreAlumno + "</td><td>" + alumno.apellido1Alumno + "</td><td>" + alumno.apellido2Alumno + "</td><td>" + alumno.email + "</td></tr>";
        });

        newHTML += "</table>";

        var asignatura = $('#selectFiltrarAsignatura option:selected').html();

        window.open(
                "/gestHora/jsp/controllers/listadoAlumnosController.jsp" + "?tipo=generarPDF&html=" + newHTML + "&usuario=" + usuario + "&asignatura=" + asignatura,
                '_blank'
                );

    });

}

